<?php

/**
 * reporte actions.
 *
 * @package    cronos-doctrine
 * @subpackage reporte
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class reporteActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
      /*
      $llamadaStatus = new LlamadaStatus();
      $this->llamadaStatus = $llamadaStatus->getLlamadaStatus();
      
      $municipios = new Municipio();
      $counter = 0;
      $this->municipios = $municipios->getMunicipio();
      foreach ($this->municipios as $municipio){
          $usuario = new Usuario();
          foreach ($this->llamadaStatus as $llamadaStatu){
            
            $dataStatus[$municipio->getid().$llamadaStatu->getId()] = count($usuario->getUsuarioMunicipio($municipio->getId(), $llamadaStatu->getId()));
            $counter+=count($usuario->getUsuarioMunicipio($municipio->getId(), $llamadaStatu->getId()));
          }
      }
      
      $dataStatus[82] = 8295 - $counter;
    
      
      $this->dataStatus = $dataStatus;
       * 
       * 
       */
  }
  
    public function executeHistorialServicio(sfWebRequest $request)
  {
    
        
        
  }
  
    public function executeResumen(sfWebRequest $request)
  {
    
        
        
        //Numero de cltes x estatus 
        $this->clientesStatus = Doctrine_Query::create()
                          ->select('r.*,count(r.id) as total')
                          ->from('Usuario r')
                          ->leftJoin('r.LlamadaProgramada llmP ON llmP.usuario_id = r.id')
                          ->addSelect('llmSn.nombre as llamada_nombre')
                          ->addWhere('llmP.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->andWhere('llmP.id = (SELECT MAX(llss1.id) from LlamadaProgramada llss1 where llss1.llamada_id IS NOT NULL and llss1.usuario_id = llmP.usuario_id and llss1.categoria_id = 1 GROUP BY llss1.usuario_id)')
                          ->leftJoin('llmP.Llamada llmS ON llmS.id = llmP.llamada_id')
                          ->leftJoin('llmS.LlamadaStatus llmSn ON llmSn.id = llmS.llamada_status_id')
                          ->groupBy('llmS.llamada_status_id')
                          ->addWhere('r.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->fetchArray();
                         
        //Numero de cltes x vivos 
        $this->clientesVivos = Doctrine_Query::create()
                          ->select('r.*,count(r.id) as total')
                          ->from('Usuario r')
                          ->leftJoin('r.LlamadaProgramada llmP ON llmP.usuario_id = r.id')
                          ->addSelect('llmP.llamada_id as llamada_nombre')
                          ->addWhere('llmP.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->andWhere('llmP.id = (SELECT MAX(llss1.id) from LlamadaProgramada llss1 where llss1.llamada_id IS NOT NULL and llss1.usuario_id = llmP.usuario_id and llss1.categoria_id = 1 GROUP BY llss1.usuario_id)')
                          ->addWhere('llmP.llamada_id = 12')
                          ->addWhere('r.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->fetchArray();
        
        $this->perroTotal = Doctrine_Query::create()
                   ->from('Mascota masc')
                   ->where('masc.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                   ->count();
        
        $this->alimentoDectados = Doctrine_Query::create()
                   ->from('UsuarioHasMarca uhm')
                   ->where('uhm.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                   ->groupBy('uhm.usuario_id')
                   ->count();
        
        $this->alimentoDectadosPre = Doctrine_Query::create()
                   ->from('UsuarioHasMarca uhm ')
                   ->where('uhm.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                   ->leftJoin('uhm.Marca marc ON uhm.marca_id = marc.id')
                   ->addWhere('marc.mancheta ="Alimento Comercial"')
                   ->groupBy('uhm.usuario_id')
                   ->count();
        
        
        $this->alimentoDectadosPreIn = Doctrine_Query::create()
                   ->select(' (SELECT count(ag.id) from Agendado ag Where ag.agendado_status_id = 5 and ag.usuario_id = uhm.usuario_id) as cantidad')
                   ->from('UsuarioHasMarca uhm ')
                   ->where('uhm.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                   ->leftJoin('uhm.Marca marc ON uhm.marca_id = marc.id')
                   ->addWhere('marc.mancheta ="Alimento Comercial"')
                   ->having('cantidad > 0 ') 
                   ->groupBy('uhm.usuario_id')
                   ->count();
        
         $this->alimentoDectadosPreInUna = Doctrine_Query::create()
                   ->select(' (SELECT count(ag.id) from Agendado ag Where ag.agendado_status_id = 5 and ag.usuario_id = uhm.usuario_id) as cantidad')
                   //->addSelect(' (SELECT count(ag.id) from Agendado ag Where ag.agendado_status_id = 5 and ag.usuario_id = uhm.usuario_id) as cantidad')
                   ->from('UsuarioHasMarca uhm ')
                   ->where('uhm.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                   ->leftJoin('uhm.Marca marc ON uhm.marca_id = marc.id')
                   ->addWhere('marc.mancheta ="Alimento Comercial"')
                   ->having('cantidad = 1 ') 
                   ->groupBy('uhm.usuario_id')
                   ->count();
         
         
         $this->alimentoDectadosPreInDos = Doctrine_Query::create()
                   ->select(' (SELECT count(ag.id) from Agendado ag Where ag.agendado_status_id = 5 and ag.usuario_id = uhm.usuario_id) as cantidad')
                   ->from('UsuarioHasMarca uhm ')
                   ->where('uhm.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                   ->leftJoin('uhm.Marca marc ON uhm.marca_id = marc.id')
                   ->addWhere('marc.mancheta ="Alimento Comercial"')
                   ->having('cantidad >= 2 ') 
                   ->groupBy('uhm.usuario_id')
                   ->count();
         
         $this->alimentoDectadosPreInTres = Doctrine_Query::create()
                   ->select(' (SELECT count(ag.id) from Agendado ag Where ag.agendado_status_id = 5 and ag.usuario_id = uhm.usuario_id) as cantidad')
                   ->from('UsuarioHasMarca uhm ')
                   ->where('uhm.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                   ->leftJoin('uhm.Marca marc ON uhm.marca_id = marc.id')
                   ->addWhere('marc.mancheta ="Alimento Comercial"')
                   ->having('cantidad >= 3 ') 
                   ->groupBy('uhm.usuario_id')
                   ->count();
        
         $this->clientesMes = Doctrine_Query::create()
                          ->select('count(r.id) as total, DATE_FORMAT(r.created_at,"%Y-%m") as fecha')
                          ->from('Usuario r')
                          ->addWhere('r.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->groupBy('DATE_FORMAT(r.created_at,"%Y-%m")')
                          ->execute();
        
         
         
         
         $this->promedioAlimentoReportado = Doctrine_Query::create()
                          ->select('avg(llam.periodicidad) as total')
                          ->from('LlamadaServicio llam')
                          ->where('llam.categoria_id = 2')
                          ->addWhere('llam.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->execute();
         
          
         $this->promedioEsteticaReportado = Doctrine_Query::create()
                          ->select('avg(llam.periodicidad) as total')
                          ->from('LlamadaServicio llam')
                          ->where('llam.categoria_id = 1')
                          ->addWhere('llam.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->execute();
         
         
         
         
        
          $this->lLamadasContestadasE = Doctrine_Query::create()
                          ->select('count(llam.id) as total, DATE_FORMAT(llam.fecha,"%Y-%m") as fecha')
                          ->from('LlamadaProgramada llam')
                          ->where('llam.categoria_id = 1')
                          ->addWhere('llam.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->addWhere('llam.llamada_id IS NOT NULL')
                          ->addWhere('DATE_FORMAT(llam.fecha,"%Y-%m") >= "2013-04" ')
                          ->groupBy('DATE_FORMAT(llam.fecha,"%Y-%m")')
                          ->execute();
         
          $this->lLamadasAgendadasE = Doctrine_Query::create()
                          ->select('count(ag.id) as total, DATE_FORMAT(ag.fecha_asig,"%Y-%m") as fecha')
                          ->from('Agendado ag')
                          ->where('ag.servicio_tipo_id = 1')
                          ->addWhere('ag.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->addWhere('ag.agendado_status_id = ')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") >= "2013-04" ')
                          ->groupBy('DATE_FORMAT(ag.fecha_asig,"%Y-%m")')
                          ->execute();
          
          
         
         
         $this->coloniaTocadas = Doctrine_Query::create()
                          ->from('Usuario r')
                          ->where('r.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->groupBy('r.parroquia_id')
                          ->count();
         
         $this->colonia = Doctrine_Query::create()
                          ->from('Parroquia pqr')
                          ->where('pqr.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->count();
         
         $this->ClientesAgMes = Doctrine_Query::create()
                          ->select('count(ag.id) as total, DATE_FORMAT(ag.fecha_asig,"%Y-%m") as fecha')
                          ->from('Agendado ag')
                          ->where('ag.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->addWhere('ag.agendado_status_id = 5')
                            ->addWhere('ag.servicio_tipo_id = 1')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") >= "2013-04" ')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") <="'.date('Y-m').'" ')
                          ->groupBy('DATE_FORMAT(ag.fecha_asig,"%Y-%m")')
                          ->execute();
         
         $this->ClientesAgMesA = Doctrine_Query::create()
                          ->select('count(ag.id) as total, DATE_FORMAT(ag.fecha_asig,"%Y-%m") as fecha')
                          ->from('Agendado ag')
                          ->where('ag.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->addWhere('ag.agendado_status_id = 5')
                            ->addWhere('ag.servicio_tipo_id = 2')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") >= "2013-04" ')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") <="'.date('Y-m').'" ')
                          ->groupBy('DATE_FORMAT(ag.fecha_asig,"%Y-%m")')
                          ->execute();
         
         $this->ClientesCanMes = Doctrine_Query::create()
                          ->select('count(ag.id) as total, DATE_FORMAT(ag.fecha_asig,"%Y-%m") as fecha')
                          ->from('Agendado ag')
                          ->where('ag.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->addWhere('ag.agendado_status_id = 4')
                           ->addWhere('ag.servicio_tipo_id = 1')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") >= "2013-04" ')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") <="'.date('Y-m').'" ')
                          ->groupBy('DATE_FORMAT(ag.fecha_asig,"%Y-%m")')
                          ->execute();
         
         $this->ClientesIngMes = Doctrine_Query::create()
                          ->select('SUM(ag.precio) as total, DATE_FORMAT(ag.fecha_asig,"%Y-%m") as fecha')
                          ->from('Agendado ag')
                          ->where('ag.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->addWhere('ag.agendado_status_id = 5')
                           ->addWhere('ag.servicio_tipo_id = 1')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") >= "2013-04" ')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") <="'.date('Y-m').'" ')
                          ->groupBy('DATE_FORMAT(ag.fecha_asig,"%Y-%m")')
                          ->execute();
         
         $this->ClientesIngMesA = Doctrine_Query::create()
                          ->select('SUM(ag.precio) as total, DATE_FORMAT(ag.fecha_asig,"%Y-%m") as fecha')
                          ->from('Agendado ag')
                          ->where('ag.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->addWhere('ag.agendado_status_id = 5')
                           ->addWhere('ag.servicio_tipo_id = 2')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") >= "2013-04" ')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") <="'.date('Y-m').'" ')
                          ->groupBy('DATE_FORMAT(ag.fecha_asig,"%Y-%m")')
                          ->execute();
       
         
         $this->PerrosMes = Doctrine_Query::create()
                          ->select('SUM(ag.cantidad_mascota) as total, DATE_FORMAT(ag.fecha_asig,"%Y-%m") as fecha')
                          ->from('Agendado ag')
                          ->where('ag.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->addWhere('ag.agendado_status_id = 5')
                          ->addWhere('ag.servicio_tipo_id = 1')
                 
                            ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") >= "2013-04" ')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") <="'.date('Y-m').'" ')
                          ->groupBy('DATE_FORMAT(ag.fecha_asig,"%Y-%m")')
                          ->execute();
          
         $this->PerrosMesA = Doctrine_Query::create()
                          ->select('ag.*,SUM(serv.cantidad) as total, DATE_FORMAT(ag.fecha_asig,"%Y-%m") as fecha')
                          ->from('Agendado ag')
                          ->where('ag.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->leftJoin('ag.Servicio serv ON serv.agendado_id = ag.id')
                          ->addWhere('ag.agendado_status_id = 5')
                          ->addWhere('ag.servicio_tipo_id = 2')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") >= "2013-04" ')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") <="'.date('Y-m').'" ')
                          ->groupBy('DATE_FORMAT(ag.fecha_asig,"%Y-%m")')
                          ->fetchArray();
         
         $this->LlamadasMes = Doctrine_Query::create()
                          ->select('count(llmp.id) as total, DATE_FORMAT(llmp.fecha,"%Y-%m") as fecha')
                          ->from('LlamadaProgramada llmp')
                          ->where('llmp.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->addWhere('llmp.llamada_id IS NOT NULL')
                          ->addWhere('DATE_FORMAT(llmp.fecha,"%Y-%m-%d") >="2013-04-01" ')
                          ->addWhere('DATE_FORMAT(llmp.fecha,"%Y-%m-%d") <="'.date('Y-m-d').'" ')
                          ->groupBy('DATE_FORMAT(llmp.fecha,"%Y-%m")')
                          ->execute();
         
        
       $tamanos = Doctrine_Query::create()
                   ->from('Tamano tam')
                   ->execute();
        
       $this->tam = array(); 
       foreach ($tamanos as $tamano) $this->tam[$tamano->getId()] = $tamano->getNombre();
       
       
       
       $razas = Doctrine_Query::create()
                   ->from('Raza raz')
                   ->execute();
       
       $raz = array();
       foreach ($razas as $raza) {
           
           $raz[$raza->getId()] = $raza->getTamanoId();
           
       }
       
       $mascotas = Doctrine_Query::create()
                   ->select('masc.raza_id as razas, count(masc.id) as total')
                   ->from('Mascota masc')
                    ->where('masc.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                   ->groupBy('masc.raza_id')
                   ->execute();
       
       
       $this->mascs = array();
       foreach ($mascotas as $mascota) {
           
           if(!empty($this->mascs[$raz[$mascota->getRazas()]])){
           $this->mascs[$raz[$mascota->getRazas()]] += $mascota->getTotal();
           }else{
           $this->mascs[$raz[$mascota->getRazas()]] = $mascota->getTotal();    
           }
           
       }
       
       
       $this->TamanoPromedios = Doctrine_Query::create()
                          ->select('ag.*, count(ag.id) as total, tam.nombre as tama, DATE_FORMAT(ag.fecha_asig,"%Y-%m") as fecha')
                          ->from('Agendado ag')
                          ->where('ag.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->addWhere('ag.agendado_status_id = 5')
                           ->addWhere('ag.servicio_tipo_id = 1')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") >= "2013-04" ')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") <="'.date('Y-m').'" ')
                          ->leftJoin('ag.MascotaHasServicio mhs ON mhs.agendado_id = ag.id')
                          ->leftJoin('mhs.Mascota masc ON mhs.mascota_id = masc.id')
                          ->leftJoin('masc.Raza raz ON masc.raza_id = raz.id')
                          ->leftJoin('raz.Tamano tam ON raz.tamano_id = tam.id')
                          ->groupBy('DATE_FORMAT(ag.fecha_asig,"%Y-%m")')
                          ->addGroupBy('raz.tamano_id')
                          ->fetchArray();
       
       
        
       $this->TamanoPromedioCs = Doctrine_Query::create()
                          ->select('ag.*, count(ag.id) as total, tam.nombre as tama, spa.nombre as cam, DATE_FORMAT(ag.fecha_asig,"%Y-%m") as fecha')
                          ->from('Agendado ag')
                          ->where('ag.empresa_id='.$this->getUser()->getAttribute('agente_user_empresa_id'))
                          ->addWhere('ag.agendado_status_id = 5')
                           ->addWhere('ag.servicio_tipo_id = 1')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") >= "2013-04" ')
                          ->addWhere('DATE_FORMAT(ag.fecha_asig,"%Y-%m") <="'.date('Y-m').'" ')
                          ->leftJoin('ag.Camioneta spa ON ag.camioneta_id = spa.id')
                          ->leftJoin('ag.MascotaHasServicio mhs ON mhs.agendado_id = ag.id')
                          ->leftJoin('mhs.Mascota masc ON mhs.mascota_id = masc.id')
                          ->leftJoin('masc.Raza raz ON masc.raza_id = raz.id')
                          ->leftJoin('raz.Tamano tam ON raz.tamano_id = tam.id')
                          ->groupBy('DATE_FORMAT(ag.fecha_asig,"%Y-%m")')
                          ->addGroupBy('ag.camioneta_id')
                          ->addGroupBy('raz.tamano_id')
                          ->fetchArray(); 
        
        
  }
    public function executeHistorialCandelacion(sfWebRequest $request)
  {
    
        
        
  }
    public function executeArqueoCaja(sfWebRequest $request)
  {
    
        
        
  }
  
    public function executeRankeo(sfWebRequest $request)
  {
    
        
        
  }
  
}
